package com.pig4cloud.pig.common.core.util;

import com.baomidou.mybatisplus.core.metadata.IPage;
import lombok.Data;

import java.io.Serializable;
import java.util.List;

/**
 * @author fangyu
 * @version v1.0.0
 * @date 2020/11/30 9:20 下午
 */
@Data
public class PageResult implements Serializable {
	private static final long serialVersionUID = 1L;
	/**
	 * 总记录数
	 */
	private int total;
	/**
	 * 每页记录数
	 */
	private int size;
	/**
	 * 总页数
	 */
	private int pages;
	/**
	 * 当前页数
	 */
	private int current;
	/**
	 * 列表数据
	 */
	private List<?> list;

	/**
	 * 分页
	 * @param list        列表数据
	 * @param total  总记录数
	 * @param size    每页记录数
	 * @param currPage    当前页数
	 */
	public PageResult(List<?> list, int total, int size, int currPage) {
		this.list = list;
		this.total = total;
		this.size = size;
		this.current = currPage;
		this.pages = (int)Math.ceil((double)total/size);
	}

	/**
	 * 分页
	 */
	public PageResult(IPage<?> page) {
		this.list = page.getRecords();
		this.total = (int)page.getTotal();
		this.size = (int)page.getSize();
		this.current = (int)page.getCurrent();
		this.pages = (int)page.getPages();
	}

	/**
	 * 分页
	 */
	public PageResult(IPage<?> page, List<?> list) {
		this.list = list;
		this.total = (int)page.getTotal();
		this.size = (int)page.getSize();
		this.current = (int)page.getCurrent();
		this.pages = (int)page.getPages();
	}

	/**
	 * 分页生成器
	 * @param page
	 * @return
	 */
	public static PageResult buildPage(IPage<?> page) {
		return new PageResult(page);
	}

	/**
	 * 分页生成器
	 * @param page
	 * @return
	 */
	public static PageResult buildPage(IPage<?> page, List<?> list) {
		return new PageResult(page, list);
	}

}
